//
//  main.c
//  Atm
//
//  Created by gg on 16-4-17.
//  Copyright (c) 2016年 gg. All rights reserved.
//


#include <stdio.h>
#include "stdlib.h"
//函数声明区
void window();
void operFunc(int);
void getMoney();
void returnWindow();
void panduan();
void saveMoney();
void transfoCount();
void changepassword();
void check();



//全局变量声明区
int syspassword=666666;//原始密码
double count=1000.0;//1.验证密码，欢迎界面
double otherscount=0.0;
void checkpassword()
{
    //定义输入的密码变量名
    int inpassword=0;
    int times=0;//银行卡输入的次数
    printf("--－欢迎使用ATM机－－－\n");
    printf("请输入银行卡密码：\n");
    scanf("%d",&inpassword);
    
    
    while(inpassword<100000||inpassword>999999)
    {
        printf("错误：请输入六位数密码！\n");
        printf("请输入银行卡密码：\n");
        scanf("%d",&inpassword);
        
    }
    times++;
    while (inpassword!=syspassword) {
        //判断是不是第三次出错，如果是直接退出程序
        if (times==3) {
            printf("密码连续错误三次，你的卡已被冻结！\n");
            exit(0);
        }
        
        //提示密码错误，给机会重新输入
        printf("密码第%d次输入错误，还有%d次机会！\n",times,3-times);
        printf("请输入银行卡密码：\n");
        scanf("%d",&inpassword);
        times++;
        
        
    }
    
    printf("恭喜你输入密码正确！\n");
    window();
    
}

//主界面函数
void window(){
    int oper=0;
    printf("欢迎进入ATM自动存取款机\n");
    printf("---------------\n");
    printf("1-取款    2-存款\n");
    printf("3-转账    4-改密\n");
    printf("5-查询    6-退卡\n");
    printf("---------------\n");
    printf("请输入操作指令（1-6）：");
    scanf("%d",&oper);
    while (oper>6||oper<1) {
        printf("指令输入有误，  请重新输入！\n");
        printf("请输入操作指令（1-6）：");
        scanf("%d",&oper);
        
    }
    operFunc(oper);
    
}
//指令处理函数
void operFunc(int op)
{
    
    //printf("指令传过来了");
    switch (op) {
        case 1:
            // 取款功能
            printf("取款进行中......请稍后\n");
            getMoney();
            break;
        case 2:
            //存款功能
            printf("存款进行中......请稍后\n");
            saveMoney();
            break;
        case 3:
            //转账功能
            printf("转账进行中......请稍后\n");
            transfoCount();
            break;
        case 4:
            //改密功能
            printf("改密进行中......请稍后\n");
            changepassword();
            
            break;
        case 5:
            //查询功能
            printf("查询进行中......请稍后\n");
            check();
            break;
        case 6:
            //退卡功能
            printf("退卡进行中......请稍后\n");
            printf("已退卡，欢迎下次继续使用！！！");
            exit(0);
            break;
        default:
            break;
    }
}

void getMoney()
{
    int pick=0;//取款金额对应的编号
    int outMoney=0;//取款金额
    printf("1-100    2-200\n");
    printf("3-300    4-500\n");
    printf("5-1000   6-其他金额\n");
    printf("请选择你的取款金额:");
    scanf("%d",&pick);
    switch (pick) {
        case 1:
            outMoney=100;
            //判断取款金额是否足够
            panduan(outMoney);
            break;
        case 2:
            outMoney=200;
            //判断取款金额是否足够
            panduan(outMoney);
            break;
        case 3:
            outMoney=300;
            //判断取款金额是否足够
            panduan(outMoney);
            break;
        case 4:
            outMoney=500;
            //判断取款金额是否足够
            panduan(outMoney);
            break;
        case 5:
            outMoney=1000;
            //判断取款金额是否足够
            panduan(outMoney);
            break;
        case 6:
            printf("请输入你的取款金额（整百）：");
            scanf("%d",&outMoney);
            while (outMoney%100!=0||outMoney==0)
            {
                printf("取款金额有误，请输入整百！\n");
                printf("请输入你的取款金额（整百）：");
                scanf("%d",&outMoney);
                
            }
            panduan(outMoney);
            break;
            
        default:
            break;
    }
}

//是否返回主界面的函数
void returnWindow()
{
    printf("返回主界面(输入1)？  退卡（输入0）？\n");
    int choice=0;
    scanf("%d",&choice);
    if(choice==1)
    {
        window();
    }
    else{
        printf("欢迎下次使用\n");
        exit(0);
    }
}

//判断取款金额
void panduan(int outMoney)
{
    if(outMoney>count)
    {
        printf("***取款金额不足，取款失败***\n");
        printf("继续取款（输入1）？  退卡（输入0）？\n");
        int choice=0;
        scanf("%d",&choice);
        if(choice==1)
        {
            getMoney();
        }
        else
        {
            printf("欢迎下次继续使用\n");
            exit(0);
        }
    }
    else
    {
        count=count-outMoney;
        printf("取款成功，取款金额:%d,账户当前余额：%.2lf\n",outMoney,count);
        returnWindow();
        
    }
}


//存款函数
void saveMoney()
{
    int  inputMoney=0;
    printf("请将钞票整理好放入验钞口\n");
    printf("请放入你要存款的钞票:\n");
    scanf("%d",&inputMoney);
    printf("正在验钞...请稍后\n");
    printf("你存款的金额为:%d元！\n",inputMoney);
    printf("交易正在进行....请稍后\n");
    count+=inputMoney;
    printf("存款成功，当前账户余额：%.2lf\n",count);
    returnWindow();
}

//转账函数
void transfoCount()
{
    int transMoney=0;
    printf("请输入转账金额:\n");
    scanf("%d",&transMoney);
    if(transMoney>count){
        printf("转账失败，余额不足\n");
        returnWindow();
    }
    else {
        count-=transMoney;
        otherscount+=transMoney;
        printf("转账成功，账户当前余额：%.2lf\n",count);
        returnWindow();
        
    }
}

// 改密函数
void changepassword()
{
    int inpassword=0;
    int newpassword1=0;
    int newpassword2=0;
    int times=0;//银行卡输入的次数
    printf("请输入原始密码:\n");
    scanf("%d",&inpassword);
    times++;
    while (inpassword!=syspassword) {
        //判断是不是第三次出错，如果是直接退出程序
        if (times==3) {
            printf("原密码连续错误三次，你的卡已被冻结！\n");
            exit(0);
        }
        //提示密码错误，给机会重新输入
        printf("原密码第%d次输入错误，还有%d次机会！\n",times,3-times);
        printf("请输入银行卡原始密码：\n");
        scanf("%d",&inpassword);
        times++;
    }
    //设置新密码
    printf("恭喜你输入原始密码正确！\n");
    printf("请输入新密码\n");
    
    scanf("%d",&newpassword1);
    while(newpassword1<100000||newpassword1>999999)
    {
        printf("错误：请输入六位数新密码！\n");
        printf("请输入银行卡新密码：\n");
        scanf("%d",&newpassword1);
        
    }
    
    printf("请再次输入新密码\n");
    scanf("%d",&newpassword2);
    while (newpassword1!=newpassword2) {
        printf("两次密码输入不一致，请重新输入!\n");
        scanf("%d",&newpassword1);
        printf("请再次输入新密码\n");
        scanf("%d",&newpassword2);
        
    }
    syspassword=newpassword1;
    printf("恭喜密码修改成功，请重新登录\n");
    checkpassword();
    
}


//查询函数
void check()
{
    printf("%.2lf\n",count);
    returnWindow();
}

int main(int argc, const char * argv[])
{
    checkpassword();
    return 0;
}